//学生的持久层
// 1 导入学生的模型
const stuModel = require("../models/studentModel.js");
// let userModel = require("../models/studentModel");
module.exports = {
    // 查找学生（通过名字找）
    async getstuname(name) {
        let result = await stuModel.find({ name }).exec();
        return result;
    },
    // 查找学生（通过性别找）
    async getstugender(gender) {
        let result = await stuModel.find({ gender }).exec();
        return result;
    },
    /**
 *根据页数和显示条数查询要显示的数据
 * @param {*} curPage  当前页面
 * @param {*} pageSize  每页显示多少条
 * return :查询出的数据
 */
    async getstudentsData(curPage, pageSize) {
        return await stuModel.find()
            .skip((curPage - 1) * pageSize)
            .limit(pageSize)
            .sort({ "_id": -1 })
            .exec();
    },

    /**
   * 查询数据的总条数
   * return ：总条数
   * countDocuments()函数用于计算与数据库集合中的过滤器匹配的文档数。
   */
    async getTolNum() {

        return await stuModel.countDocuments().exec()
    },
    /**
    * 添加一个学生的信息
    * @param {*} studentObj  学生对象
    */
    async inserStudent(studentObj) {
        return await stuModel.create(studentObj);
    },
    /**
       *  根据id删除学生信息
       * @param {*} studentid 
       */
    async deleteStudentById(studentid) {
        return await stuModel.deleteOne({ _id: studentid }).exec();
    },
    /**
  * 修改学生信息
  * @param {*} studentid  学生的编号
  * @param {*} studentObj  修改的学生对象
  * @returns 
  * findByIdAndUpdate()函数用于查找匹配的文档，
  * 根据更新arg对其进行更新，传递任何选项，
  * 然后将找到的文档(如果有)返回给回调。
  */
    async updateStudentById(studentid, studentObj) {
        return await stuModel.findByIdAndUpdate(studentid, studentObj).exec()
    },
    /**
    * 根据学生id查询学生
    * @param {*} stuid  学生编号
    */
    async getStudentById(stuid) {
        return await stuModel.findById(stuid).exec();
    }

}